/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package sv.com.intesal.compra.managed;

import java.io.Serializable;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import org.primefaces.event.SelectEvent;
import sv.com.intesal.clases.Mensaje;
import sv.com.intesal.compra.bean.BitacoraInventario;
import sv.com.intesal.compra.bean.Categoria;
import sv.com.intesal.compra.bean.SubCategoria;
import sv.com.intesal.compra.bean.Sucursal;
import sv.com.intesal.compra.controlador.CategoriaControlador;
import sv.com.intesal.compra.controlador.SubCategoriaControlador;
import sv.com.intesal.compra.controlador.SucursalControlador;
import sv.com.intesal.seguridad.controlador.BitacoraControlador;
import sv.com.intesal.seguridad.managed.SessionManaged;

/**
 *
 * @author ejerez
 */
@ManagedBean(name = "bitacoraInvetarioManaged")
@ViewScoped
public class BitacoraInvetarioManaged implements Serializable {

    private Mensaje m;
    private SessionManaged sm;
    private BitacoraInventario selectedBitacoraInventario;
    private BitacoraInventario selectedDetaBitacoraInventario;
    private List<BitacoraInventario> bitacoraInventariosEnca;
    private List<BitacoraInventario> bitacoraInventariosDeta;
    private List<Categoria> categorias;
    private List<SubCategoria> subCategorias;
    private List<Sucursal> sucursales;

    public BitacoraInvetarioManaged() {
        this.m = new Mensaje();
        this.sm = new SessionManaged();
        this.selectedBitacoraInventario = new BitacoraInventario();
        this.selectedDetaBitacoraInventario = new BitacoraInventario();

        this.llenarCategoria_y_SubCategoria();
    }

    public void fillGrid() {
        try {
            if (sm.validar_rol_usuario("wfrmcon_BitacoraInventario", sm.buscar) == true) {
                BitacoraControlador bc = new BitacoraControlador();
                this.bitacoraInventariosEnca = bc.getEncaBitacoraInventario(this.selectedBitacoraInventario);
            }
        } catch (Exception e) {
            m.messageError(m.getIerror());
            e.printStackTrace();
        }
    }

    private void llenarCategoria_y_SubCategoria() {
        try {
            if (this.categorias == null) {
                CategoriaControlador cc = new CategoriaControlador();
                this.categorias = cc.fillComboBox();
            }

            if (this.subCategorias == null) {
                SubCategoriaControlador sc = new SubCategoriaControlador();
                this.subCategorias = sc.getSubCategorias_x_Categoria(this.categorias.get(0).getId_cat());
            }

            if (sucursales == null) {
                SucursalControlador sc = new SucursalControlador();
                this.sucursales = sc.getAllSucursales();
            }

        } catch (Exception e) {
            m.messageError(m.getIerror());
            e.printStackTrace();
        }
    }

    public void llenarSubCategorias() {
        try {
            SubCategoriaControlador sc = new SubCategoriaControlador();
            this.subCategorias = sc.getSubCategorias_x_Categoria(this.selectedBitacoraInventario.getId_cat());
        } catch (Exception e) {
            m.message(m.getIerror());
            e.printStackTrace();
        }
    }

    public void llenar_tableDeta(SelectEvent event) {
        BitacoraInventario bi = ((BitacoraInventario) event.getObject());

        try {
            this.selectedDetaBitacoraInventario = bi;
            bi.setFecha_i(this.selectedBitacoraInventario.getFecha_i());
            bi.setFecha_f(this.selectedBitacoraInventario.getFecha_f());

            BitacoraControlador bc = new BitacoraControlador();
            this.bitacoraInventariosDeta = bc.getDetaBitacoraInventario(bi);

        } catch (Exception e) {
            m.message(m.getIerror());
            e.printStackTrace();
        }
    }
    

    public void generarReporte_Deta() {

        /*GENERAR REPORTE DENTRO DEL GRID. 1 SOLO PRODUCTO*/
        try {

            if (this.bitacoraInventariosDeta == null) {
                m.messageError("NO HAY REGISTROS EN LA BUSQUEDA DEL DETALLE");
            } else {
                if (sm.validar_rol_usuario("wfrmcon_BitacoraInventario", sm.reporte) == true) {
                    this.selectedDetaBitacoraInventario = new BitacoraInventario();
                    this.selectedDetaBitacoraInventario.setFecha_i(this.selectedBitacoraInventario.getFecha_i());
                    this.selectedDetaBitacoraInventario.setFecha_f(this.selectedBitacoraInventario.getFecha_f());
                    this.selectedDetaBitacoraInventario.setId_dm(this.bitacoraInventariosDeta.get(0).getId_dm());

                    BitacoraControlador bc = new BitacoraControlador();
                    bc.generarReporte_BitacoraInventario_x_Producto(this.selectedDetaBitacoraInventario);
                }
            }
        } catch (Exception e) {
            m.message(m.getIerror());
            e.printStackTrace();
        }
    }

    public void generarReporte_Enca() {

        try {

            if (this.bitacoraInventariosEnca == null) {
                m.messageError("NO HAY REGISTROS EN LA BUSQUEDA");
            } else {
                if (sm.validar_rol_usuario("wfrmcon_BitacoraInventario", sm.reporte) == true) {
                    BitacoraControlador bc = new BitacoraControlador();
                    bc.generarReporte_BitacoraInventario_x_Producto(this.selectedBitacoraInventario);
                }
            }
        } catch (Exception e) {
            m.message(m.getIerror());
            e.printStackTrace();
        }
    }


    /* SETTERS AND GETTERS */
    public BitacoraInventario getSelectedBitacoraInventario() {
        if (selectedBitacoraInventario == null) {
            selectedBitacoraInventario = new BitacoraInventario();
        }
        return selectedBitacoraInventario;
    }

    public void setSelectedBitacoraInventario(BitacoraInventario selectedBitacoraInventario) {
        this.selectedBitacoraInventario = selectedBitacoraInventario;
    }

    public List<BitacoraInventario> getBitacoraInventariosDeta() {
        return bitacoraInventariosDeta;
    }

    public void setBitacoraInventariosDeta(List<BitacoraInventario> bitacoraInventariosDeta) {
        this.bitacoraInventariosDeta = bitacoraInventariosDeta;
    }

    public List<BitacoraInventario> getBitacoraInventariosEnca() {
        return bitacoraInventariosEnca;
    }

    public void setBitacoraInventariosEnca(List<BitacoraInventario> bitacoraInventariosEnca) {
        this.bitacoraInventariosEnca = bitacoraInventariosEnca;
    }

    public List<Categoria> getCategorias() {
        return categorias;
    }

    public void setCategorias(List<Categoria> categorias) {
        this.categorias = categorias;
    }

    public List<SubCategoria> getSubCategorias() {
        return subCategorias;
    }

    public void setSubCategorias(List<SubCategoria> subCategorias) {
        this.subCategorias = subCategorias;
    }

    public BitacoraInventario getSelectedDetaBitacoraInventario() {
        if (selectedDetaBitacoraInventario == null) {
            selectedDetaBitacoraInventario = new BitacoraInventario();
        }
        return selectedDetaBitacoraInventario;
    }

    public void setSelectedDetaBitacoraInventario(BitacoraInventario selectedDetaBitacoraInventario) {
        this.selectedDetaBitacoraInventario = selectedDetaBitacoraInventario;
    }

    public List<Sucursal> getSucursales() {
        return sucursales;
    }

    public void setSucursales(List<Sucursal> sucursales) {
        this.sucursales = sucursales;
    }
}
